﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Cotizav.Presentacion.WinForms.Persona.Cliente
{
    public partial class ListarCliente : Form
    {
        private List<Entidades.Cliente> ListaClientes_Activos;
        private List<Entidades.Contacto> ListaContactos;
        
        public ListarCliente()
        {
            InitializeComponent();
            ListaClientes_Activos = new List<Entidades.Cliente>();
            ListaContactos = new List<Entidades.Contacto>();
        }

        private void ListarCliente_Load(object sender, EventArgs e)
        {
            LoadListClientes_Activos();
            LoadListVendedor();
            LoadListSector();
            LoadListCategoria();
            LoadListSucursal();
            LoadListProvincia();

            SetReadOnly_FormularioCliente();
            SetReadOnly_FormularioContactos();
            SetNoVisible_AceptarCancelarButton();
        }

        private void LoadListClientes_Activos()
        {
            LogicaNegocio.ClienteBLL clienteBLL = new LogicaNegocio.ClienteBLL();
            ListaClientes_Activos = clienteBLL.Listar_Activos().OrderBy(x => x.RazonSocial).ToList();
            gridClientes.DataSource = null;
            gridClientes.DataSource = ListaClientes_Activos;
            lbl_Clientes_NFilas.Text = gridClientes.Rows.Count.ToString("N");
        }

        private void LoadListVendedor()
        {
            cmbVendedor.DataSource = (new LogicaNegocio.VendedorBLL()).Listar();
            cmbVendedor.DisplayMember = "Nombre";
            cmbVendedor.ValueMember = "IdVendedor";
            cmbVendedor.SelectedIndex = -1;
        }

        private void LoadListSector()
        {
            cmbSector.DataSource = (new LogicaNegocio.SectorBLL()).Listar();
            cmbSector.DisplayMember = "NombreSector";
            cmbSector.ValueMember = "IdSector";
            cmbSector.SelectedIndex = -1;
        }

        private void LoadListCategoria()
        {
            cmbCategoria.DataSource = (new LogicaNegocio.CategoriaBLL()).Listar();
            cmbCategoria.DisplayMember = "NombreCategoria";
            cmbCategoria.ValueMember = "IdCategoria";
            cmbCategoria.SelectedIndex = -1;
        }

        private void LoadListSucursal()
        {
            cmbSucursal.DataSource = (new LogicaNegocio.SucursalBLL()).Listar();
            cmbSucursal.DisplayMember = "NombreSucursal";
            cmbSucursal.ValueMember = "IdSucursal";
            cmbSucursal.SelectedIndex = -1;
        }

        private void LoadListProvincia()
        {
            cmbProvincia.DataSource = (new LogicaNegocio.ProvinciaBLL()).Listar();
            cmbProvincia.DisplayMember = "NombreProvincia";
            cmbProvincia.ValueMember = "IdProvincia";
            cmbProvincia.SelectedIndex = -1;
        }

        private void cmbProvincia_SelectionChangeCommitted(object sender, EventArgs e)
        {
            if (cmbProvincia.SelectedIndex >= 0)
            {
                int idProvincia = Int32.Parse(cmbProvincia.SelectedValue.ToString());

                LogicaNegocio.DistritoBLL distritoBLL = new LogicaNegocio.DistritoBLL();
                cmbDistrito.DataSource = distritoBLL.ListarDistrito(idProvincia);
                cmbDistrito.DisplayMember = "NombreDistrito";
                cmbDistrito.ValueMember = "IdDistrito";
                cmbDistrito.SelectedIndex = -1;
            }
        }

        private void gridClientes_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            if (gridClientes.DataSource != null)
            {
                gridClientes.Columns["IdCliente"].Visible = false;
                gridClientes.Columns["IdCategoria"].Visible = false;
                gridClientes.Columns["IdDistrito"].Visible = false;
                gridClientes.Columns["IdSucursal"].Visible = false;
                gridClientes.Columns["IdVendedor"].Visible = false;
                gridClientes.Columns["IdSector"].Visible = false;
                gridClientes.Columns["CodigoCliente"].Visible = false;
                gridClientes.Columns["RazonSocial"].HeaderText = "Razón social";
                gridClientes.Columns["RazonSocial"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
                gridClientes.Columns["Direccion"].Visible = false;
                gridClientes.Columns["Provincia"].Visible = false;
                gridClientes.Columns["Telefono"].Visible = false;
                gridClientes.Columns["Email"].Visible = false;
                gridClientes.Columns["RucCliente"].DisplayIndex = 0;
                gridClientes.Columns["RucCliente"].HeaderText = "R.U.C.";
                gridClientes.Columns["FechaRegistro"].Visible = false;
                gridClientes.Columns["UsuarioRegistro"].Visible = false;
                gridClientes.Columns["FechaModificacion"].Visible = false;
                gridClientes.Columns["UsuarioModificacion"].Visible = false;
                gridClientes.Columns["Activo"].Visible = false;
            }
        }

        private void gridClientes_SelectionChanged(object sender, EventArgs e)
        {
            if (gridClientes.SelectedRows.Count > 0)
            {
                LogicaNegocio.ClienteBLL clienteBLL = new LogicaNegocio.ClienteBLL();

                Entidades.Cliente selCliente = gridClientes.SelectedRows[0].DataBoundItem as Entidades.Cliente;

                if (selCliente != null)
                {
                    Entidades.Cliente getCliente = clienteBLL.ListarCliente(selCliente);

                    if (getCliente != null)
                    {
                        MostrarCliente(getCliente);                        
                        MostrarContactos(getCliente);
                        LimpiarFormularioContacto();
                    }
                }
            }
        }

        private void MostrarCliente(Entidades.Cliente getCliente)
        {
            LogicaNegocio.DistritoBLL distritoBLL = new LogicaNegocio.DistritoBLL();
            Entidades.Distrito selDistrito = getCliente.IdDistrito.HasValue ? distritoBLL.ObtenerDistrito(getCliente.IdDistrito.Value) : null;

            txtRuc.Text = getCliente.RucCliente.Trim();
            //se agrega el id del Cliente
            txtRuc.Tag = getCliente.IdCliente;
            txtFechaRegistro.Text = getCliente.FechaRegistro.HasValue ? getCliente.FechaRegistro.Value.ToShortDateString() : string.Empty;
            txtRazonSocial.Text = getCliente.RazonSocial.Trim();
            txtDireccion.Text = getCliente.Direccion.Trim();
            cmbVendedor.SelectedIndex = getCliente.IdVendedor.HasValue ? cmbVendedor.Items.Cast<Entidades.Vendedor>().SingleOrDefault(x => x.IdVendedor == getCliente.IdVendedor.Value) != null ? cmbVendedor.Items.IndexOf(cmbVendedor.Items.Cast<Entidades.Vendedor>().SingleOrDefault(x => x.IdVendedor == getCliente.IdVendedor.Value)) : -1 : -1;
            cmbSector.SelectedIndex = getCliente.IdSector.HasValue ? cmbSector.Items.Cast<Entidades.Sector>().SingleOrDefault(x => x.IdSector == getCliente.IdSector.Value)!= null ? cmbSector.Items.IndexOf(cmbSector.Items.Cast<Entidades.Sector>().SingleOrDefault(x => x.IdSector == getCliente.IdSector.Value)) : -1 : -1;
            cmbCategoria.SelectedIndex = getCliente.IdCategoria.HasValue ? cmbCategoria.Items.Cast<Entidades.Categoria>().SingleOrDefault(x => x.IdCategoria == getCliente.IdCategoria.Value)!= null ? cmbCategoria.Items.IndexOf(cmbCategoria.Items.Cast<Entidades.Categoria>().SingleOrDefault(x => x.IdCategoria == getCliente.IdCategoria.Value)) : -1 :-1;
            cmbSucursal.SelectedIndex = getCliente.IdSucursal.HasValue ? cmbSucursal.Items.Cast<Entidades.Sucursal>().SingleOrDefault(x => x.IdSucursal == getCliente.IdSucursal.Value)!= null ? cmbSucursal.Items.IndexOf(cmbSucursal.Items.Cast<Entidades.Sucursal>().SingleOrDefault(x => x.IdSucursal == getCliente.IdSucursal.Value)) : -1 :-1;
            cmbProvincia.SelectedIndex = selDistrito != null ? cmbProvincia.Items.Cast<Entidades.Provincia>().SingleOrDefault(x => x.IdProvincia == selDistrito.IdProvincia.Value)!= null ? cmbProvincia.Items.IndexOf(cmbProvincia.Items.Cast<Entidades.Provincia>().SingleOrDefault(x => x.IdProvincia == selDistrito.IdProvincia.Value)) : -1 :-1;
            cmbProvincia_SelectionChangeCommitted(cmbProvincia, EventArgs.Empty);
            cmbDistrito.SelectedIndex = getCliente.IdDistrito.HasValue ? cmbDistrito.Items.Cast<Entidades.Distrito>().SingleOrDefault(x => x.IdDistrito == getCliente.IdDistrito.Value) != null ? cmbDistrito.Items.IndexOf(cmbDistrito.Items.Cast<Entidades.Distrito>().SingleOrDefault(x => x.IdDistrito == getCliente.IdDistrito.Value)) : -1 : -1;
            txtEmail.Text = getCliente.Email.Trim();
            txtTelefono.Text = getCliente.Telefono.Trim();
        }

        private void SetReadOnly_FormularioCliente()
        {
            txtRuc.ReadOnly = true;
            txtRazonSocial.ReadOnly = true;
            txtDireccion.ReadOnly = true;
            cmbVendedor.Enabled = false;
            cmbSector.Enabled = false;
            cmbProvincia.Enabled = false;
            cmbCategoria.Enabled = false;
            cmbDistrito.Enabled = false;
            cmbSucursal.Enabled = false;
            txtEmail.ReadOnly = true;
            txtTelefono.ReadOnly = true;
        }

        private void SetEditable_FormularioCliente()
        {
            txtRuc.ReadOnly = false;
            txtRazonSocial.ReadOnly = false;
            txtDireccion.ReadOnly = false;
            cmbVendedor.Enabled = true;
            cmbSector.Enabled = true;
            cmbProvincia.Enabled = true;
            cmbCategoria.Enabled = true;
            cmbDistrito.Enabled = true;
            cmbSucursal.Enabled = true;
            txtEmail.ReadOnly = false;
            txtTelefono.ReadOnly = false;
        }

        private void Reset_FormularioCliente()
        {
            txtRuc.ResetText();
            txtRuc.Tag = null;
            txtRazonSocial.ResetText();
            txtDireccion.ResetText();
            txtEmail.ResetText();
            txtTelefono.ResetText();
            LoadListVendedor();
            LoadListSector();
            LoadListCategoria();
            LoadListSucursal();
            LoadListProvincia();
        }

        private void Reset_FormularioContactos()
        {
            ListaContactos.Clear();
            gridContactos.DataSource = null;
            txtNombreContacto.ResetText();
            txtTelefonoContacto.ResetText();
            txtCargoContacto.ResetText();
            txtEmailContacto.ResetText();
            txtCelularContacto.ResetText();
            txtRpmContacto.ResetText();
            txtRPCContacto.ResetText();
            txtNextelContacto.ResetText();
            txtFaxContacto.ResetText();            
        }

        private void LimpiarFormularioContacto()
        {
            txtNombreContacto.ResetText();
            txtCargoContacto.ResetText();
            txtCelularContacto.ResetText();
            txtRpmContacto.ResetText();
            txtNextelContacto.ResetText();
            txtFaxContacto.ResetText();
            txtTelefonoContacto.ResetText();
            txtEmailContacto.ResetText();
            txtRPCContacto.ResetText();
        }

        private void SetReadOnly_FormularioContactos()
        {
            txtNombreContacto.ReadOnly = true;
            txtTelefonoContacto.ReadOnly = true;
            txtCargoContacto.ReadOnly = true;
            txtEmailContacto.ReadOnly = true;
            txtCelularContacto.ReadOnly = true;
            txtRpmContacto.ReadOnly = true;
            txtRPCContacto.ReadOnly = true;
            txtNextelContacto.ReadOnly = true;
            txtFaxContacto.ReadOnly = true;
            btnLimpiar.Enabled = false;
            btnNuevo.Enabled = false;
            btnModificar.Enabled = false;
            btnEliminar.Enabled = false;            
        }

        private void SetEditable_FormularioContactos()
        {
            txtNombreContacto.ReadOnly = false;
            txtTelefonoContacto.ReadOnly = false;
            txtCargoContacto.ReadOnly = false;
            txtEmailContacto.ReadOnly = false;
            txtCelularContacto.ReadOnly = false;
            txtRpmContacto.ReadOnly = false;
            txtRPCContacto.ReadOnly = false;
            txtNextelContacto.ReadOnly = false;
            txtFaxContacto.ReadOnly = false;
            btnLimpiar.Enabled = true;
            btnNuevo.Enabled = true;
            btnModificar.Enabled = true;
            btnEliminar.Enabled = true;            
        }

        private void SetVisible_AceptarCancelarButton()
        {
            btnAceptar.Visible = true;
            btnCancelar.Visible = true;
        }

        private void SetNoVisible_AceptarCancelarButton()
        {
            btnAceptar.Visible = false;
            btnCancelar.Visible = false;
        }

        private void SetEnabled_ModificarButton()
        {
            btnModificar.Enabled = true;
        }

        private void SetNoEnabled_ModificarButton()
        {
            btnModificar.Enabled = false;
        }

        private void SetEnabled_InactivarButton()
        {
            btnInactivarCliente.Enabled = true;
        }

        private void SetNoEnabled_InactivarButton()
        {
            btnInactivarCliente.Enabled = false;
        }

        private void MostrarContactos(Entidades.Cliente getCliente)
        {
            LogicaNegocio.ContactoBLL contactoBLL = new LogicaNegocio.ContactoBLL();
            ListaContactos = contactoBLL.Listar(getCliente);

            gridContactos.DataSource = null;            
            gridContactos.DataSource = ListaContactos;
            gridContactos.ClearSelection();
        }

        private void gridContactos_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            if (gridContactos.DataSource != null)
            {
                gridContactos.Columns["IdContacto"].Visible = false;
                gridContactos.Columns["IdCliente"].Visible = false;
                gridContactos.Columns["Statusflag"].Visible = false;
                gridContactos.Columns["Activo"].Visible = false;
            }
        }

        private void txtBusquedaFiltro_TextChanged(object sender, EventArgs e)
        {
            if (!string.IsNullOrWhiteSpace(txtBusquedaFiltro.Text))
            {
                gridClientes.DataSource = null;
                gridClientes.DataSource = ListaClientes_Activos.Where(x => x.RazonSocial.Contains(txtBusquedaFiltro.Text)).ToList();
                lbl_Clientes_NFilas.Text = gridClientes.Rows.Count.ToString("N");
            }
            else
            {
                gridClientes.DataSource = null;
                gridClientes.DataSource = ListaClientes_Activos;
                lbl_Clientes_NFilas.Text = gridClientes.Rows.Count.ToString("N");
            }
        }

        private void btnModificarCliente_Click(object sender, EventArgs e)
        {
            if (gridClientes.SelectedRows.Count > 0)
            {
                SetEditable_FormularioCliente();
                SetEditable_FormularioContactos();
                SetVisible_AceptarCancelarButton();

                SetNoEnabled_ModificarButton();
                SetNoEnabled_InactivarButton();
            }
        }

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            DialogResult dr = MessageBox.Show("¿Confirma la actualización de datos para el cliente?", "Cotizav", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);

            if (dr == DialogResult.Yes)
            {
                LogicaNegocio.ClienteBLL clienteBLL = new LogicaNegocio.ClienteBLL();

                try
                {
                    Entidades.Cliente updCliente = new Entidades.Cliente()
                    {
                        IdCliente = int.Parse(txtRuc.Tag.ToString()),                        
                        RucCliente = !string.IsNullOrWhiteSpace(txtRuc.Text) ? txtRuc.Text.Trim() : null,
                        RazonSocial = !string.IsNullOrWhiteSpace(txtRazonSocial.Text) ? txtRazonSocial.Text.Trim() : null,
                        Direccion = !string.IsNullOrWhiteSpace(txtDireccion.Text) ? txtDireccion.Text.Trim() : null,
                        IdVendedor = cmbVendedor.SelectedIndex >= 0 ? int.Parse(cmbVendedor.SelectedValue.ToString()) : new Nullable<int>(),
                        Provincia = cmbProvincia.SelectedIndex >= 0 ? (cmbProvincia.SelectedItem as Entidades.Provincia).NombreProvincia.Trim() : null,
                        IdDistrito = cmbDistrito.SelectedIndex >= 0 ? int.Parse(cmbDistrito.SelectedValue.ToString()) : new Nullable<int>(),
                        IdSector = cmbSector.SelectedIndex >= 0 ? int.Parse(cmbSector.SelectedValue.ToString()) : new Nullable<int>(),
                        IdCategoria = cmbCategoria.SelectedIndex >= 0 ? int.Parse(cmbCategoria.SelectedValue.ToString()) : new Nullable<int>(),
                        IdSucursal = cmbSucursal.SelectedIndex >= 0 ? int.Parse(cmbSucursal.SelectedValue.ToString()) : new Nullable<int>(),
                        Email = !string.IsNullOrWhiteSpace(txtEmail.Text) ? txtEmail.Text.Trim() : null,
                        Telefono = !string.IsNullOrWhiteSpace(txtTelefono.Text) ? txtTelefono.Text.Trim() : null,
                        Activo = 1,
                        FechaModificacion = DateTime.Now,
                        UsuarioModificacion = null,
                        ListContacto = ListaContactos
                    };

                    int resultado = clienteBLL.Actualizar(updCliente);

                    if (resultado > 0)
                    {
                        MessageBox.Show("Cliente actualizado", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);

                        Reset_FormularioCliente();
                        Reset_FormularioContactos();
                        SetReadOnly_FormularioCliente();
                        SetReadOnly_FormularioContactos();
                        SetNoVisible_AceptarCancelarButton();

                        SetEnabled_ModificarButton();
                        SetEnabled_InactivarButton();
                    }
                }
                catch (ApplicationException aex)
                {
                    MessageBox.Show(aex.Message, "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                }
            }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            DialogResult dr = MessageBox.Show("¿Esta seguro en cancelar la operación?", "Cotizav", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);

            if (dr == DialogResult.Yes)
            {
                SetReadOnly_FormularioCliente();
                SetReadOnly_FormularioContactos();
                SetNoVisible_AceptarCancelarButton();

                SetEnabled_ModificarButton();
                SetEnabled_InactivarButton();

                if (gridClientes.SelectedRows.Count > 0)
                {
                    LogicaNegocio.ClienteBLL clienteBLL = new LogicaNegocio.ClienteBLL();

                    Entidades.Cliente selCliente = gridClientes.SelectedRows[0].DataBoundItem as Entidades.Cliente;

                    if (selCliente != null)
                    {
                        Entidades.Cliente getCliente = clienteBLL.ListarCliente(selCliente);

                        if (getCliente != null)
                        {
                            MostrarCliente(getCliente);
                            MostrarContactos(getCliente);
                        }
                    }
                }
            }
        }

        private void btnNuevo_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrWhiteSpace(txtNombreContacto.Text))
            {
                if (!string.IsNullOrWhiteSpace(txtTelefonoContacto.Text))
                {
                    Entidades.Contacto newContacto = new Entidades.Contacto()
                    {
                        Nombre = txtNombreContacto.Text.Trim(),
                        Cargo = txtCargoContacto.Text.Trim(),
                        Telefono = txtTelefonoContacto.Text.Trim(),
                        Email = txtEmailContacto.Text.Trim(),
                        Celular = txtCelularContacto.Text.Trim(),
                        Rpm = txtRpmContacto.Text.Trim(),
                        Rpc = txtRPCContacto.Text.Trim(),
                        Nextel = txtNextelContacto.Text.Trim(),
                        Fax = txtFaxContacto.Text.Trim(),
                        Statusflag = "I"
                    };

                    ListaContactos.Add(newContacto);

                    gridContactos.DataSource = null;
                    gridContactos.DataSource = ListaContactos.Where(x => x.Statusflag != "D").ToList();
                    gridContactos.ClearSelection();

                    LimpiarFormularioContacto();
                }
                else
                {
                    MessageBox.Show("Ingrese el teléfono del contacto", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                }
            }
            else
            {
                MessageBox.Show("Ingrese nombre del contacto", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
            }
        }

        private void btnModificar_Click(object sender, EventArgs e)
        {
            if (gridContactos.SelectedRows.Count > 0)
            {
                int selectedIndex = gridContactos.SelectedRows[0].Index;

                if (ListaContactos[selectedIndex] != null)
                {
                    ListaContactos[selectedIndex].Nombre = txtNombreContacto.Text;
                    ListaContactos[selectedIndex].Cargo = txtCargoContacto.Text;
                    ListaContactos[selectedIndex].Celular = txtCelularContacto.Text;
                    ListaContactos[selectedIndex].Rpm = txtRpmContacto.Text;
                    ListaContactos[selectedIndex].Rpc = txtCelularContacto.Text;
                    ListaContactos[selectedIndex].Nextel = txtNextelContacto.Text;
                    ListaContactos[selectedIndex].Fax = txtFaxContacto.Text;
                    ListaContactos[selectedIndex].Telefono = txtTelefonoContacto.Text;
                    ListaContactos[selectedIndex].Email = txtEmailContacto.Text;
                    ListaContactos[selectedIndex].Rpc = txtRPCContacto.Text;
                    ListaContactos[selectedIndex].Statusflag = ListaContactos[selectedIndex].Statusflag != "I" ? "U" : "I";

                    gridContactos.DataSource = null;
                    gridContactos.DataSource = ListaContactos.Where(x => x.Statusflag != "D").ToList();
                    gridContactos.ClearSelection();

                    LimpiarFormularioContacto();
                }
            }
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            if (gridContactos.SelectedRows.Count > 0)
            {
                int selectedIndex = gridContactos.SelectedRows[0].Index;

                if (ListaContactos[selectedIndex] != null)
                {
                    if (ListaContactos[selectedIndex].Statusflag != "I")
                    {
                        ListaContactos[selectedIndex].Statusflag = "D";
                    }
                    else
                    {
                        ListaContactos.RemoveAt(selectedIndex);
                    }

                    gridContactos.DataSource = null;
                    gridContactos.DataSource = ListaContactos.Where(x => x.Statusflag != "D").ToList();
                    gridContactos.ClearSelection();

                    LimpiarFormularioContacto();
                }
            }
        }

        private void gridContactos_SelectionChanged(object sender, EventArgs e)
        {
            if (gridContactos.SelectedRows.Count > 0)
            {
                Entidades.Contacto selContacto = gridContactos.SelectedRows[0].DataBoundItem as Entidades.Contacto;

                if (selContacto != null)
                {
                    txtNombreContacto.Text = selContacto.Nombre;
                    txtCargoContacto.Text = selContacto.Cargo;
                    txtCelularContacto.Text = selContacto.Celular;
                    txtRpmContacto.Text = selContacto.Rpm;
                    txtCelularContacto.Text = selContacto.Rpc;
                    txtNextelContacto.Text = selContacto.Nextel;
                    txtFaxContacto.Text = selContacto.Fax;
                    txtTelefonoContacto.Text = selContacto.Telefono;
                    txtEmailContacto.Text = selContacto.Email;
                    txtRPCContacto.Text = selContacto.Rpc;
                }
            }
        }

        private void btnLimpiar_Click(object sender, EventArgs e)
        {
            LimpiarFormularioContacto();
        }

        private void btnInactivarCliente_Click(object sender, EventArgs e)
        {
            if (gridClientes.SelectedRows.Count > 0)
            {
                DialogResult dr = MessageBox.Show("¿Confirma inactivar el cliente?", "Cotizav", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);

                if (dr == DialogResult.Yes)
                {
                    Entidades.Cliente selectedCliente = gridClientes.SelectedRows[0].DataBoundItem as Entidades.Cliente;

                    if (selectedCliente != null)
                    {
                        LogicaNegocio.ClienteBLL clienteBLL = new LogicaNegocio.ClienteBLL();
                        int resultado = clienteBLL.Eliminar(selectedCliente);

                        if (resultado > 0)
                        {
                            Reset_FormularioCliente();
                            Reset_FormularioContactos();
                            SetReadOnly_FormularioCliente();
                            SetReadOnly_FormularioContactos();

                            SetEnabled_ModificarButton();
                            SetEnabled_InactivarButton();

                            LoadListClientes_Activos();

                            LoadListVendedor();
                            LoadListSector();
                            LoadListCategoria();
                            LoadListSucursal();
                            LoadListProvincia();
                        }
                    }
                } 
            }
        }
    }
}
